草庐IT

Java XPathFactory 线程安全

全部标签

c# - 如果另一个线程正在执行它,则退出该方法

我在多线程应用程序中有一个方法,我希望调用此方法时出现以下行为:如果当前没有其他线程正在执行该方法,则执行它。如果另一个线程当前正在执行该方法,则退出该方法而不执行它。C#中的lock语句对于等待线程完成执行很有用,但我不想序列化对此方法的访问,而是绕过执行所述方法(如果它正在被执行)另一个线程。 最佳答案 您可以使用Monitor.TryEnter执行此操作,但也许更简单:互锁:intexecuting;//makethisstaticifyouwantthisone-caller-onlyto//allobjectsinstea

c# - 使用 Active Directory 中的安全组的 Asp.Net 基于角色的身份验证

我正在尝试做一些简单的事情(我认为)-使用我们域中的ActiveDirectory组使用基于角色的安全性来保护我的应用程序。具体来说,我需要根据当前登录的用户是否属于domain\groupA来显示/隐藏页面上的项目在事件目录中。出于某种原因,很难找到有关为此使用ActiveDirectory的信息。我似乎找到的所有内容都涉及使用角色使用基于表单的身份验证的详细信息,或者它使用数据库来存储信息。我只想在ActiveDirectory中使用我们已经概述的安全结构。有人可以解释一下我需要什么吗?我需要:在web.config在web.configIIS设置为windows身份验证if(Us

c# - 如何并行运行两个线程?

我通过单击按钮启动两个线程,每个线程调用一个单独的例程,每个例程将打印线程名称和i的值。程序运行完美,但我看到Thread1()函数先运行,然后Thread2()例程开始,但我尝试运行Thread1()和Thread2()都是并行的。我哪里出错了?privatevoidbutton1_Click(objectsender,EventArgse){Threadtid1=newThread(newThreadStart(Thread1));Threadtid2=newThread(newThreadStart(Thread2));tid1.Start();tid2.Start();Mess

c# - 安全使用 'HttpContext.Current.Cache'

我在这样的Web服务方法中使用Cache:varpblDataList=(List)HttpContext.Current.Cache.Get("pblDataList");if(pblDataList==null){varPBLData=dc.ExecuteQuery(@"SELECTblabla");pblDataList=PBLData.ToList();HttpContext.Current.Cache.Add("pblDataList",pblDataList,null,DateTime.Now.Add(newTimeSpan(0,0,15)),Cache.NoSliding

c# - 如何在 C# 中执行线程安全函数内存?

此处堆栈溢出found内存单参数函数的代码:staticFuncMemoize(thisFuncf){vard=newDictionary();returna=>{Rr;if(!d.TryGetValue(a,outr)){r=f(a);d.Add(a,r);}returnr;};}虽然这段代码为我完成了它的工作,但当同时从多个线程调用内存函数时,它有时会失败:Add方法使用相同的参数被调用两次并抛出异常。如何使内存线程安全? 最佳答案 您可以使用ConcurrentDictionary.GetOrAdd它做你需要的一切:stati

c# - 从线程向主线程发送异常?

我想将当前线程(该线程不是主线程)的异常传递给主线程。为什么?因为我在另一个线程中检查我的硬锁(该线程使用计时器进行检查),当HardLock不可访问或无效时,我创建了一个由我自己定义的异常,然后抛出该异常。所以那个异常(exception)不能很好地工作。;( 最佳答案 最好的办法是将Thread替换为Task(.NET4.0中的新功能)。Task类处理将异常正确编码到任何检查任务结果的线程。如果无法使用.NET4.0,则Rxextensions中的CoreEx.dll包含一个Exception.PrepareForRethrow

c# - 如何正确关闭已创建多个线程的 C# 应用程序?

我正在编写一个GUI应用程序。应用程序在其生命周期内打开了多个线程。其中一个线程正在处理可能来自其他应用程序的事件,因此它在while(true)循环中等待永远不会终止的事件。用户可以随时关闭应用程序。我想关闭主应用程序打开的所有线程。我正在使用Process.GetCurrentProcess().Kill();暂时解决这个问题。这是一个好的解决方案吗?如果不是,为什么以及处理这个问题的正确方法是什么,如何关闭主应用程序打开的所有线程? 最佳答案 如果您将新线程创建为后台线程(通过在启动它们之前设置IsBackground),它们

c# - 从后台线程通知 UI 线程

我正在尝试在后台下载一些页面,其内容将被插入到数据库中。我需要在某种后台线程(BackgroundWorker或ThreadPool,由于我可以将事情排队的方式而首选)上执行此操作,但我还需要在作业完成后更新UI。如何通知UI线程作业已在WindowsPhone上完成?我见过有人使用Dispatcher.beginInvoke,但不清楚他使用的是什么(Worker或Pool)——这是执行此操作的正确方法吗? 最佳答案 Deployment.Current.Dispatcher.BeginInvoke(()=>{//changeUIh

c# - 无法创建 SSL/TLS 安全通道 - 问题可能出在代理服务器上吗?

我有一个c#应用程序,它调用一个使用证书进行身份验证的Web服务方法。该代码有效,因为当它安装在服务器A(没有代理)上时,它会进行身份验证。当我在客户端站点的服务器B上安装代码时,它安装在代理后面。我真的几乎尝试了所有方法,但我一直收到此错误:无法创建SSL/TLS安全通道您认为此问题可能是由代理服务器引起的吗?如果您对此有任何个人经验,请分享。谢谢 最佳答案 根据我的经验,几乎所有此类消息都是由于链中的某些机器(客户端、代理、服务器)出于某种原因不“喜欢”证书。详细说明twk所说的内容,如果您使用的是自签名证书或您自己的CA,您需

c# - 授权整个安全组在 ASP.Net MVC 中执行操作

我想授权用户在我的Controller中执行特定操作。我找到了ASP.NETtutorial这解释了如何允许单个用户执行特定操作,但这可以扩展到安全组吗?例如,如果代码如下所示,属于“domain\group”安全组的每个人都可以访问GetSecrets操作吗:[Authorize(Users="domain\group")]publicActionResultGetSecrets(){returnView();}如果没有,我该怎么做? 最佳答案 您想使用Roles属性(property)。请注意,这可以是逗号分隔的角色列表。[Au